﻿using System;
using System.Collections.Generic;
using System.Linq;
using Controller2.BLL;

namespace Controller2.Models.ViewModels
{
    public class EntradaViewModel
    {
        public int ID { get; set; }
        public string Midia { get; set; }
        public string DataPrevista { get; set; }
        public string ValorPrevisto { get; set; }
        public string DataRecebimento { get; set; }
        public string ValorRecebimento { get; set; }
        public string Job { get; set; }

        public IEnumerable<EntradaViewModel> Listar(ControllerBDModelContainer db, string texto, int filtro)
        {
            IEnumerable<EntradaViewModel> brain;
            int codigo = 0;
            if (filtro == 1)
            {
                if (!Int32.TryParse(texto, out codigo))
                {
                    filtro = 0;
                    texto = "";
                }
            }
            if (string.IsNullOrWhiteSpace(texto) || texto.Equals("Digite sua pesquisa"))
            {
                filtro = 0;
                texto = "";
            }
            switch (filtro)
            {
                default:
                    brain = from c in EntradaBll.GetAllEntradas(db)
                            orderby c.IdEntrada
                            select new EntradaViewModel
                            {
                                ID = c.IdEntrada,
                                Midia = c.Midia.Nome,
                                DataPrevista = c.DataPrevista.ToShortDateString(),
                                ValorPrevisto = c.ValorPrevisto.ToString("N2"),
                                DataRecebimento = c.DataRecebimento == null ? "" : Convert.ToDateTime(c.DataRecebimento).ToShortDateString(),
                                ValorRecebimento = c.ValorRecebimento == null ? "" : Convert.ToDecimal(c.ValorRecebimento).ToString("N2"),
                                Job = c.Job != null ? c.Job.IdJob.ToString() : ""
                            };
                    break;
                case 1:
                    brain = from c in EntradaBll.GetAllEntradas(db)
                            orderby c.IdEntrada
                            where c.IdEntrada == codigo
                            select new EntradaViewModel
                            {
                                ID = c.IdEntrada,
                                Midia = c.Midia.Nome,
                                DataPrevista = c.DataPrevista.ToShortDateString(),
                                ValorPrevisto = c.ValorPrevisto.ToString("N2"),
                                DataRecebimento = c.DataRecebimento == null ? "" : Convert.ToDateTime(c.DataRecebimento).ToShortDateString(),
                                ValorRecebimento = c.ValorRecebimento == null ? "" : Convert.ToDecimal(c.ValorRecebimento).ToString("N2"),
                                Job = c.Job != null ? c.Job.IdJob.ToString() : ""
                            };
                    break;
                case 2:
                    brain = from c in EntradaBll.GetAllEntradas(db)
                            orderby c.IdEntrada
                            where c.DataPrevista.ToShortDateString().Contains(texto)
                            select new EntradaViewModel
                            {
                                ID = c.IdEntrada,
                                Midia = c.Midia.Nome,
                                DataPrevista = c.DataPrevista.ToShortDateString(),
                                ValorPrevisto = c.ValorPrevisto.ToString("N2"),
                                DataRecebimento = c.DataRecebimento == null ? "" : Convert.ToDateTime(c.DataRecebimento).ToShortDateString(),
                                ValorRecebimento = c.ValorRecebimento == null ? "" : Convert.ToDecimal(c.ValorRecebimento).ToString("N2"),
                                Job = c.Job != null ? c.Job.IdJob.ToString() : ""
                            };
                    break;
            }

			return brain.OrderBy(o => o.ID);
        }
    }
}